package com.hogocloud.corelibrary.utils

import android.content.Context

object DisplayUtils {

    /**
     * 将px值转换为dip或dp值，保证尺寸大小不变
     *
     * @param pxValue
     * （DisplayMetrics类中属性density）
     * @return
     */
    fun px2dip(context: Context, pxValue: Float): Int {
        val scale = context.resources.displayMetrics.density
        return (pxValue / scale + 0.5f).toInt()
    }

    /**
     * 将dip或dp值转换为px值，保证尺寸大小不变
     *
     * @param dipValue
     * （DisplayMetrics类中属性density）
     * @return
     */
    fun dip2px(context: Context, dipValue: Float): Int {
        val scale = context.resources.displayMetrics.density
        return (dipValue * scale + 0.5f).toInt()
    }

    /**
     * 将dip或dp值转换为px值，保证尺寸大小不变
     *
     * @param dpResid
     * xml中定义的dp属性
     * getDimension()                返回float型px值     精确
     * getDimensionPixelOffset()     返回int型px值       直接把小数删除
     * getDimensionPixelSize()       返回int型px值       进行四舍五入
     *
     * @return
     */
    fun xmlDip2px(context: Context, dpResid: Int): Int {
        return context.resources.getDimensionPixelOffset(dpResid)
    }

    /**
     * 将px值转换为sp值，保证文字大小不变
     *
     * @param pxValue
     * （DisplayMetrics类中属性scaledDensity）
     * @return
     */
    fun px2sp(context: Context, pxValue: Float): Int {
        val fontScale = context.resources.displayMetrics.scaledDensity
        return (pxValue / fontScale + 0.5f).toInt()
    }

    /**
     * 将sp值转换为px值，保证文字大小不变
     *
     * @param spValue
     * （DisplayMetrics类中属性scaledDensity）
     * @return
     */
    fun sp2px(context: Context, spValue: Float): Int {
        val fontScale = context.resources.displayMetrics.scaledDensity
        return (spValue * fontScale + 0.5f).toInt()
    }

    /**
     * 将sp值转换为px值，保证文字大小不变
     *
     * @param spResid
     * xml中定义的sp属性
     * getDimension()                返回float型px值     精确
     * getDimensionPixelOffset()     返回int型px值       直接把小数删除
     * getDimensionPixelSize()       返回int型px值       进行四舍五入
     *
     * @return
     */
    fun xmlSp2px(context: Context, spResid: Int): Int {
        return context.resources.getDimensionPixelOffset(spResid)
    }
}